#!/usr/bin/env python
# -*- coding: utf-8 -*-
# Time       :   16:29
# Author     : Y4
# Site       : 
# File       : 005 进程阻塞式.py
# Software   : PyCharm

'''
阻塞式
添加一个执行一个任务,如果一个任务部结束,另一个任务进不来

进程池
pool = Pool(max)    创建进程池对象

pool.apply_async(task,args=(i,),callback=cb)            非阻塞
pool.apply(task,args=(i,))                              阻塞

pool.close()        # 添加任务结束
pool.join()         # 让主进程让步


'''

from multiprocessing import Pool
import os
import time
import random

def task(task_name):
    print('开始做任务啦',task_name)
    start = time.time()
    time.sleep(random.random()*2)
    end = time.time()
    print('完成任务:{},用时:{},进程id:{}'.format(task_name,start-end,os.getpid()))



if __name__ == '__main__':
    pool = Pool(5)
    tasks = ['听音乐','散步','吃饭','洗衣服','打游戏','洗澡','做饭']
    for i in tasks:
        pool.apply(task,args=(i,))        # 阻塞调用

    pool.close()        # 添加任务结束
    pool.join()         #

    print("over!!!")


'''
开始做任务啦 听音乐
完成任务:听音乐,用时:-0.1787853240966797,进程id:7652
开始做任务啦 散步
完成任务:散步,用时:-0.4964916706085205,进程id:8928
开始做任务啦 吃饭
完成任务:吃饭,用时:-0.25933074951171875,进程id:17412
开始做任务啦 洗衣服
完成任务:洗衣服,用时:-0.15076494216918945,进程id:11384
开始做任务啦 打游戏
完成任务:打游戏,用时:-1.2077937126159668,进程id:5716
开始做任务啦 洗澡
完成任务:洗澡,用时:-1.4546682834625244,进程id:7652
开始做任务啦 做饭
完成任务:做饭,用时:-1.7165143489837646,进程id:8928
over!!!
'''
